package com.weiwu.weiwustore.controller;

import com.weiwu.weiwustore.pojo.MaterialListVo;
import com.weiwu.weiwustore.pojo.RestResponse;
import com.weiwu.weiwustore.pojo.UserP;
import com.weiwu.weiwustore.service.MaterialService;
import com.weiwu.weiwustore.utils.CrudUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

@RestController
public class MaterialController {
    @Autowired
    MaterialService materialService;

    /**
     * 获取当前系统的所有[材料种类]列表 item形式返回
     * @return
     */
    @GetMapping("/material/getmaterialitem")
    public RestResponse getmaterialitem(){
        return new RestResponse(materialService.getmaterialitem(),0,200);
    }
    /**
     * 获取当前系统的适用【仓库id】的【材料种类】列表
     * @param map storeid 仓库id
     * @return 是否成功
     */
    @PostMapping("/material/getmaterialitembystoreid")
    public RestResponse getmaterialitembystoreid(@RequestBody Map<String, Object> map) {
        return new RestResponse(materialService.getmaterialitembystoreid(map),0,200);
    }


    /**
     * 获取材料列表 材料管理用
     *
     * @param map 分页数据和查询条件
     * @return 材料列表数据
     */
    @PostMapping("/material/getmaterials")
    public RestResponse getmaterials(@RequestBody Map<String, Object> map) {
        List<MaterialListVo> res = materialService.getmaterials(map);
        Integer count = resCount(map);
        if (count == 0) {
            count = res.size();
        }
        return new RestResponse(res, count, 200);
    }

    /**
     * 新增材料
     * @param map  isusenew 是否是新建材料，materialtype 材料种类数字id或中文，mname 材料名称，introduce 材料种类描述
     *             quantity 单位，price 指导价
     * @return 是否成功
     */
    @PostMapping("/material/materialadd")
    public RestResponse materialadd(@RequestBody Map<String, Object> map) {
        return new RestResponse(materialService.materialadd(map),0,200);
    }
    /**
     * 根据材料id获取单位和指导价
     * @param map  id
     * @return 是否成功
     */
    @PostMapping("/material/getmaterialprice")
    public RestResponse getmaterialprice(@RequestBody Map<String, Object> map) {
        return new RestResponse(materialService.getmaterialprice(map),0,200);
    }


    /**
     * 返回搜索查询返回的数据总数  如果默认查询全部则返回数据库内总数
     *
     * @param map 查询条件
     * @return 要么返回默认查询全部的数据总数  要么返回0 后续返回数据组的长度
     */
    private Integer resCount(Map<String, Object> map) {
        Integer count = 0;
        if (!map.containsKey("storeid")) {
            if (!map.containsKey("select")) {
                count = materialService.findCount();
            }
        }
        return count;
    }
}
